使用脚本上焦点中定义的全局变量
t0=时间。时间是全球性的
这个函数呢
返回("["str(time.time()-t0) "] ") ## 从初始开始的时间戳
我正在尝试使用
打印(时间戳(t0)”。。。无论什么"")
这是可行的,但是当我通过
thread_id范围(win32-safe_os):
... p=进程(目标=fonction,args=((thread_id),测试))
...p.start()
...thread_list.append(p)
为了
打印(时间戳(t0)加载核心str(thread_id))
打印(时间戳(t0)str(filetodo)str(thread_id))
打印(时间戳(t0)str(filetodo)str(<--plhd--2/>)
我得到这个标准:
[2.70299983025]297 jpg/36087文件
[2.75]进入多线程
[2.75]Win32找到:2个内核
[0.0]加载内核0
[0.0]测试内核0
[0.0]自由内核0
[0.0]加载内核1
[0.0]测试内核1
[0.0]自由内核1
我可以看到,我的时间戳()和t0调用工作,但不是在p.start()。我想知道如何(和为什么)我需要纠正?
附言:我试着利用时间。时钟,但在win32中它指的是线程的开始(不是脚本)/
每个进程都有一个单独的全局变量实例。如果希望每个进程看到相同的值,则需要将该值作为参数传递给每个进程。
以下代码:
import time
from multiprocessing import Process
t0 = time.time() ## is global
def timestamp(t0):
return ("[" + str(time.time()-t0)+ "] ") ## time stamping from initial start
def fonction(thread_id, filetodo):
print(timestamp(t0)+"Load core "+str(thread_id))
print(timestamp(t0)+str(filetodo)+" on core "+str(thread_id))
print(timestamp(t0)+"Free core "+str(thread_id))
thread_list = []
for thread_id in range(2):
p = Process(target=fonction, args=((thread_id),"test"))
p.start()
thread_list.append(p)
...在我的Linux机器上的输出:
[0.00588583946228] Load core 0
[0.00625395774841] test on core 0
[0.00644302368164] Free core 0
[0.007572889328] Load core 1
[0.00768899917603] test on core 1
[0.00770998001099] Free core 1
所以这是可以的。你能发送更完整的代码片段吗?