V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  qazwsxkevin  ›  全部回复第 15 页 / 共 17 页
回复总数  330
1 ... 7  8  9  10  11  12  13  14  15  16 ... 17  
2019-11-29 22:27:58 +08:00
回复了 qazwsxkevin 创建的主题 Python 请教 concurrent.futures 多进程之间,如何共享变量?
@wuwukai007 明白。。。。


不是传进变量进进程执行函数。。。
各个进程都是是同一款执行函数,想让这个函数在执行过程当中传个变量出来(或者说是去对一个全局,其它进程也可以访问的变量进行动态修改),各个进程函数也会在不同的阶段,去读取这个变量去做判断?
2019-11-28 14:28:54 +08:00
回复了 okwork 创建的主题 问与答 怎么证明是内容的原作者?
以前见到过一些网文,在后面大概有这么一句话,,本文已经过区块链发布……
做了一个简单测试,情况不妙,估计不好。。。

else: # 见到有空闲的进程就提交任务
FutureRetList[i] = FutureList[i].submit(SProcessFunc, str(i + 1), SomeDict,Task[j],countt,ErrorLogFilePath)
FutureStartTimeList[i] = time.time()
FutureProcSuit[i] = Task[j] # 记下这个任务,准备在失败的时候,再调出进行重新提交,反正是死磕到任务成功为止
print("进程池:[" + Process_i + "] 提交了: [" + countt + "] 是第 [" + str(countt) + "] 个任务.",f"{time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())}")


pid = (list(FutureList[i]._processes.keys()))[0]
print(pid)
time.sleep(20)
#进行 20 秒左右后杀进程
exeCstr = "taskkill -f -pid " + str(pid)
os.system(exeCstr)
time.sleep(10)
#再次提交
FutureRetList[i] = FutureList[i].submit(SProcessFunc, str(i + 1), SomeDict,Task[j],countt,ErrorLogFilePath)




在杀进程后,直接就抛出异常了,再次提交也是不行的,直接报 1 码结束了主程序,整体结束。

outut:

Traceback (most recent call last):
File "D:/Work//SPFromDB.py", line 309, in <module>
FutureRetList[i] = FutureList[i].submit(SProcessFunc, str(i + 1), SomeDict,Task[j],countt,ErrorLogFilePath)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\concurrent\futures\process.py", line 452, in submit
raise BrokenProcessPool('A child process terminated '
concurrent.futures.process.BrokenProcessPool: A child process terminated abruptly, the process pool is not usable anymore

进程已结束,退出代码 1
@ManjusakaL 明白思路了,是一个办法。。。,暂时无法理解一个“unique 的参数”?是什么,得琢磨琢磨。。。^_^

看看有没有其它更好的办法?
@ManjusakaL 可以对线程启动的内容纪录 PID ? 假如各个进程跑的都是是 Chrome.exe ,12 个进程跑满,内存会有 N 个 python.exe ,N 个 Chrome.exe ,怎么分辨谁是谁? 能零失误杀进程?
以前只试过用 psutil.pids()来获取 PID 杀进程。。。
@feelapi 请教,如果业务的具体逻辑实现用 cpp 开发,在 win 的平台下(不使用 WEB 的方式,WEB 在人力的成本投入其实不低吧?)用什么做 UI,衔接最好,成本最低,人也容易上手?
@JoeoooLAI,多线程没试过,我是前一段时间试过多进程会有这种情况
@liukangxu 应该不会,CPU 数和核数,是很清楚的,我打算这几天忙完后,再申请个虚拟机试试,



刚才上面忘了补充,是虚拟机是 Win7
2019-11-18 23:14:32 +08:00
回复了 ArJun 创建的主题 问与答 如何看待潘石屹学 Python ?
不知道目的何在
如果有切合实际的目的
我是这样看的
在高度来看,目标产出比会比靠这口饭活的人高很多
他对学习 python 有问题的话,解决时效会比 v2 的所有人都会优良(他有钱去推磨)
他一定不会学习细到很细(譬如去找 python 工作的要求),但是他应该能触悟到比靠用 python 吃饭的人更多的东西
总之,真要学,他起点非常高。
v2ray 是不是已经确定被可以被干扰了?
2019-11-13 20:06:32 +08:00
回复了 JustinL 创建的主题 微信 有人觉得微信监听聊天内容吗?
@a566 [一般来说输入法监听的比较严重,最好是用谷歌已经停止更新的输入法]
有么? 特指哪个最后的版本? 可否给大家贴个传送门?
2019-11-13 10:54:46 +08:00
回复了 dongcxcx 创建的主题 问与答 腾迅云 hk 主机稳定吗
广州,联通线路,连接 11~15ms 之间
2019-11-13 10:53:52 +08:00
回复了 dongcxcx 创建的主题 问与答 腾迅云 hk 主机稳定吗
11.11 新用户 88 ¥一年买了一个,现在都还未有时间架设,只是早前听说过用企鹅和阿狸的 HK 主机做梯不会被封,或者说被封几率比较低,这次有优惠就先买了先
粗暴点,爬出去,把相近版本的 chromedriver 都下载下来,逐个替换上去试试
我记得 webdriver 有 option 是可以指定 driver.exe 的路径的。。。
by the way,我没有路由器的管理权
2019-10-26 17:25:50 +08:00
回复了 qazwsxkevin 创建的主题 Python multiprocessing 的进程池,能否做到监控一些状态?
@ClericPy,有不明白的地方,concurrent.futures,比如:

```
eStatusSuit = []
e = futures.ProcessPoolExecutor(max_workers=5)
eStatus = e.submit(ProcessCaseID,someVarA ,someVarB)
eStatusSuit.append(eStatus)
#
eStatus = e.submit(ProcessCaseID,someVarC ,someVarD)
eStatusSuit.append(eStatus)
#
eStatus = e.submit(ProcessCaseID,someVarE ,someVarF)
eStatusSuit.append(eStatus)

#此时是向 e 提交了 3 个任务
#eStatus 对象,我看了一下,似乎是无法查看到 33 个任务具体状态,只能等待 eStatus 全体执行完毕,全部返回 eStatus.result()?
#eStatus.result()是个阻塞式,想不到怎么用。。。

#我是想建立能跑 5 个进程的可控队列,不知道这么干是否合适,还是有更方便的方式?

aExecutor = futures.ProcessPoolExecutor(max_workers=1)
bExecutor = futures.ProcessPoolExecutor(max_workers=1)
cExecutor = futures.ProcessPoolExecutor(max_workers=1)
dExecutor = futures.ProcessPoolExecutor(max_workers=1)
eExecutor = futures.ProcessPoolExecutor(max_workers=1)

然后做个
aExecutorStatus = aExecutor.submit(ProcessCaseID,someVarA ,someVarB)
bExecutorStatus = bExecutor.submit(ProcessCaseID,someVarC ,someVarD)
#省略...

#对各个 ExecutorStatus 的 running(),done()进行循环判断,哪个 False/True 了,就从 queue 里取任务提交过去,哪个失败了,再调度一下优先权
if aExecutorStatus.running():
xxx
#省略...

不知道是不是这样乱来的?
```
@momocraft
@ClericPy
嗯,明白了,感谢,回头我尽量把方式改为 with,有个基础概念不是很清晰的地方,with 包起来的内容,完成后我记得应该是全自动清的,而不用手动去 close,不知道有无理解错(刚起步写 python 没多久,以前基本没用过 with )


另请教 @ClericPy:见过大佬您多次推荐 cdp,其实很早想请教在 github 或者其它地方,有无简单入门的 demo 例子,可以实现 cdp 去 open link,对页面 id/xpath 进行点击,获取页面 html 代码这些简单的起步学习? 官网的每个方法的解释,比较碎...
@Trim21 嗯嗯,是的,是 finnally 里,其实我原本的代码里,finally 是没有的...
2019-10-22 16:27:28 +08:00
回复了 qazwsxkevin 创建的主题 Python 如何多线程(可控数量)历遍完字典?
@robinlovemaggie 我这两天自己学习了一下多线程,还不够深入,尽管上面高手们都提到了解决方法,其实一次取 5 个,每次 5 个这样压入函数进行独立线程处理,等 5 个处理完,再下一批,也是可以的,起码比起单线程处理要好多了。。。

细想了一下,保持 5 个,出 1 个进 1 个的 FIFO 队列算法,太难了,我这里的情况可能要连整个处理函数的设计都要改。。。

加上现在的集合来源,是字典,我本来在 for 的历遍里面是有一些 continue 拐弯的,现在也甚是头疼怎么改。。。
1 ... 7  8  9  10  11  12  13  14  15  16 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   968 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 22:03 · PVG 06:03 · LAX 15:03 · JFK 18:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.