来个屌Python大的

S.M-avatar

S.M

2021-12-28T14:44:05+00:00

dict的popitem他线程安全吗?我做Java的[img]https://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc4cc6331.png[/img]
WHITEREAPER-avatar

WHITEREAPER

GIL 了解一下。Python 觉得你不需要多线程。
Chandler.Wang-avatar

Chandler.Wang

解释器用CPython的话有GIL吧
S.M-avatar

S.M

就是Python觉得我不需要多线程是吧[img]https://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc4cc6331.png[/img]难怪多线程后感觉慢了,我还以为我做错了什么。。。
S.M-avatar

S.M

所以Python基本上是伪多线程是吧[img]https://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc4cc6331.png[/img]
用的是官方3.8
MrMolshy-avatar

MrMolshy

非要用字典吗,换成queue,pop两个元素,一个当键,一个当值不行吗
Jockwell-avatar

Jockwell

安全但不完全安全...

比如你执行的是d[key] = d[key] +1

因为这类执行原语还是取值,加1,写入. 没锁的话执行还是会出问题...

但是吧,由于Python多线程是有点蠢... 也很少用,大家也不太纠结这个问题

[img]https://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc4cc6331.png[/img]
GoldSkullKing-avatar

GoldSkullKing

cpython不存在多进程,有进程锁。