python中哪个不能有重复的元素
python能不能用再d上?
python能不能用再d上?
不能,且未来也不太可能。 游戏开发语言,就目前来看,只可能是静态语言。如 C , C#,JAVA等。任何动态语言都不适合做游戏开发。即便是有动态语言上了引擎,也会被改造成静态语言。比如JAVASCRIPT。
举个例子:网页中的JAVASCRIPT声明变量如下:
var a10; var b啦啦啦
; UNITY中的JAVASCRIPT声明变量:
public var a10 : int; public var b啦啦啦 : string; 在老版本的UNITY里,有个叫BOO的语言,语法类似PYTHON(只是缩进用法相同,其他几乎毫无关系) ,但后来已经被取消了。
UNITY真正靠谱的开发语言,就有C#这一种。
Python多进程和多线程是鸡肋嘛?
什么是线程?你为什么想要它?本质上,Python是一种线性语言,但是当您需要更多处理能力时,线程模块会派上用场。尽管Python中的线程不能用于并行CPU计算,但是它非常适合Web抓取之类的I / O操作,因为处理器处于空闲状态,等待数据。
线程改变了游戏规则,因为许多与网络/数据I / O相关的脚本花费了大部分时间来等待来自远程源的数据。因为可能未链接下载(即,抓取单独的网站),所以处理器可以并行地从不同的数据源下载并在最后合并结果。对于CPU密集型进程,使用线程模块几乎没有好处。
幸运的是,线程包含在标准库中:
您可以target用作可调用对象,args将参数传递给函数,并start启动线程。
如果您从未见过if __name__ __main__:,那么这基本上是一种确保嵌套在其中的代码仅在脚本直接运行(不导入)的情况下才能运行的方法。
锁您通常会希望您的线程能够使用或修改线程之间共有的变量,但为此您必须使用称为的东西lock。每当函数要修改变量时,它都会锁定该变量。当另一个函数要使用变量时,它必须等待直到该变量被解锁。
想象两个都将变量迭代1的函数。使用锁可以确保一个函数可以访问该变量,执行计算并写回该变量,然后另一个函数才能访问相同的变量。
使用线程模块时,在打印时也会发生这种情况,因为文本可能会变得混乱(并导致数据损坏)。您可以使用打印锁来确保一次只能打印一个线程。
在这里,我们有10个工作要做,还有5个将完成工作的工人。
多线程并不总是完美的解决方案我发现许多指南倾向于忽略使用他们刚刚尝试教给您的工具的负面影响。重要的是要了解使用所有这些工具既有优点也有缺点。例如:
与管理线程相关的开销很大,因此您不想将其用于基本任务(例如示例);
增加了程序的复杂性,这会使调试更加困难。
什么是多进程?它与线程有何不同?如果不进行多进程,由于GIL(全局解释器锁定),Python程序将无法最大化系统的规格。在设计Python时,并不是考虑到个人计算机可能具有多个内核(向您显示该语言的年代),因此GIL是必需的,因为Python不是线程安全的,并且在访问Python对象时存在全局强制的锁。尽管不是十全十美,但它是一种非常有效的内存管理机制。我们能做什么?
多处理允许您创建可以同时运行(绕过GIL)并使用整个CPU内核的程序。尽管它与线程库有根本的不同,但是语法非常相似。多重处理库为每个进程提供了自己的Python解释器,并为每个进程提供了自己的GIL。
因此,与线程相关的常见问题(例如数据损坏和死锁)不再是问题。由于进程不共享内存,因此它们不能同时修改相同的内存。
让我们开始吧:如果您有共享数据库,则要确保在启动新进程之前等待相关进程完成。
如果要将参数传递给流程,可以使用args
这是一个简洁的示例,因为您会注意到,数字没有按您期望的顺序排列。
与线程处理一样,多进程仍有弊端……您必须选择它:
数据在进程之间随机移动会产生I / O开销整个内存被复制到每个子进程中,这对于更重要的程序可能会产生很多开销你应该用什么?如果您的代码有很多I / O或网络使用情况:
多线程是您最好的选择,因为它的开销很低如果您有GUI
多线程,因此您的UI线程不会被锁定如果您的代码受CPU限制:
您应该使用多重处理(如果您的计算机具有多个内核)