教程中的这段代码:
from multiprocessing import Pool
import os, time, random
def long_time_task(name):
print('Run task %s (%s)...' % (name, os.getpid()))
start = time.time()
time.sleep(random.random() * 3)
end = time.time()
print('Task %s runs %0.2f seconds.' % (name, (end - start)))
if __name__=='__main__':
print('Parent process %s.' % os.getpid())
p = Pool(4)
for i in range(5):
p.apply_async(long_time_task, args=(i,))
print('Waiting for all subprocesses done...')
p.close()
p.join()
print('All subprocesses done.')
执行之后只显示:
Parent process 8472.
Waiting for all subprocesses done...
All subprocesses done.
并没有运行子进程的那一段,请问是什么问题
可能你忘记敲join()了
多进程不能使用python自带的idle,要使用其他ide或者直接在命令行里执行,因为idle只支持单进程
应该是IED的问题,直接通过python命令去执行是正常的,直接在命令行输入:python xxx.py
我也遇到了这个问题,我是用Spyder,所以应该要怎么解决呢,上面的回复没太看懂
命令行切换到你创建的文件目录下,输入指令 `python 文件名`,文件名要包括文件后缀 `.py`。
你要是命令行不知道是什么,就自己百度,了解一下基本的指令。
Sign in to make a reply
安羽8023
教程中的这段代码:
from multiprocessing import Pool
import os, time, random
def long_time_task(name):
print('Run task %s (%s)...' % (name, os.getpid()))
start = time.time()
time.sleep(random.random() * 3)
end = time.time()
print('Task %s runs %0.2f seconds.' % (name, (end - start)))
if __name__=='__main__':
print('Parent process %s.' % os.getpid())
p = Pool(4)
for i in range(5):
p.apply_async(long_time_task, args=(i,))
print('Waiting for all subprocesses done...')
p.close()
p.join()
print('All subprocesses done.')
执行之后只显示:
Parent process 8472.
Waiting for all subprocesses done...
All subprocesses done.
并没有运行子进程的那一段,请问是什么问题