Discuss / Python / 老师我把你的代码完全复制进来但是运行仍然有问题

老师我把你的代码完全复制进来但是运行仍然有问题

Topic source
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.')

这是我的输出结果: ========== RESTART: C:\Users\Lenovo\Desktop\learning Python\test.py ========== Parent process 8136. Waiting for all subprocesses done... All subprocesses done.

为什么不回显示子程序的运行时间?

在cmd中运行就可以,不知为什么

石天遗

#3 Created at ... [Delete] [Delete and Lock User]

同样,我在linux终端中运行也是这样,没有回显时间

Nuomi1

#4 Created at ... [Delete] [Delete and Lock User]
Parent process 56798.
Waiting for all subprocesses done...
Run task 0 (56799)...
Run task 1 (56800)...
Run task 2 (56801)...
Run task 3 (56802)...
Task 0 runs 1.50 seconds.
Run task 4 (56799)...
Task 2 runs 1.89 seconds.
Task 1 runs 2.40 seconds.
Task 3 runs 2.45 seconds.
Task 4 runs 1.22 seconds.
All subprocesses done.

OS X 可以。

丁磊BLH

#5 Created at ... [Delete] [Delete and Lock User]

这是我的win10 ,python交互模式下

在此插入代码

Parent process 1572.

<multiprocessing.pool.ApplyResult object at 0x02A80FD0>

<multiprocessing.pool.ApplyResult object at 0x02A8A030>

<multiprocessing.pool.ApplyResult object at 0x00C30290>

<multiprocessing.pool.ApplyResult object at 0x00C302F0>

<multiprocessing.pool.ApplyResult object at 0x00C30350> Waiting for all subprocesses done... Process SpawnPoolWorker-4: Traceback (most recent call last): Process SpawnPoolWorker-6: Traceback (most recent call last): File "C:\Python34\lib\multiprocessing\process.py", line 254, in bootstrap self.run() Process SpawnPoolWorker-3: File "C:\Python34\lib\multiprocessing\process.py", line 254, in bootstrap self.run() File "C:\Python34\lib\multiprocessing\process.py", line 93, in run self.target(self._args, **self._kwargs) Traceback (most recent call last): Process SpawnPoolWorker-5: File "C:\Python34\lib\multiprocessing\process.py", line 93, in run self._target(self.args, self._kwargs) File "C:\Python34\lib\multiprocessing\pool.py", line 108, in worker task = get() File "C:\Python34\lib\multiprocessing\process.py", line 254, in _bootstrap self.run() Traceback (most recent call last): File "C:\Python34\lib\multiprocessing\pool.py", line 108, in worker task = get() File "C:\Python34\lib\multiprocessing\queues.py", line 357, in get return ForkingPickler.loads(res) File "C:\Python34\lib\multiprocessing\process.py", line 93, in run self._target(*self._args, self.kwargs) File "C:\Python34\lib\multiprocessing\process.py", line 254, in bootstrap self.run() File "C:\Python34\lib\multiprocessing\queues.py", line 357, in get return ForkingPickler.loads(res) AttributeError: Can't get attribute 'longtimetask' on <module '__main__' (built-in)> File "C:\Python34\lib\multiprocessing\pool.py", line 108, in worker task = get() File "C:\Python34\lib\multiprocessing\process.py", line 93, in run self._target(self._args, *self._kwargs) AttributeError: Can't get attribute 'long_time_task' on <module '__main' (built-in)> File "C:\Python34\lib\multiprocessing\queues.py", line 357, in get return ForkingPickler.loads(res) File "C:\Python34\lib\multiprocessing\pool.py", line 108, in worker task = get() AttributeError: Can't get attribute 'long_time_task' on <module '__main' (built-in)> File "C:\Python34\lib\multiprocessing\queues.py", line 357, in get return ForkingPickler.loads(res) AttributeError: Can't get attribute 'long_time_task' on <module '__main' (built-in)> Process SpawnPoolWorker-8: Traceback (most recent call last): File "C:\Python34\lib\multiprocessing\process.py", line 254, in _bootstrap self.run() File "C:\Python34\lib\multiprocessing\process.py", line 93, in run self._target(self._args, *self._kwargs) File "C:\Python34\lib\multiprocessing\pool.py", line 108, in worker task = get() File "C:\Python34\lib\multiprocessing\queues.py", line 357, in get return ForkingPickler.loads(res) AttributeError: Can't get attribute 'long_time_task' on <module '__main' (built-in)>


  • 1

Reply