小编gee*_*eek的帖子

使用if/else或字典的更好的优化技术

哪个更好的优化?

  • 接收'string'的一系列if/else语句返回适当的函数.(大约40-50 if/else语句).
  • 保持键值对的字典.key作为字符串,值作为函数对象,一个main函数用于搜索和返回函数对象.

使用上述方法实际返回函数对象的主函数将被称为数百万或数十亿次,因此需要智能地执行此操作.什么可能是更好的方式?

例如

dict['str1'] = func1
dict['str2'] = func2
and so on..

def main_func(str):
    return dict[str]
Run Code Online (Sandbox Code Playgroud)

要么

def main_func(str):
    if 'str1':
      return func1
    elif 'str2':
      return func2
Run Code Online (Sandbox Code Playgroud)

哪个更好..?如果我们有50-60个这样的字符串,这个过程需要数十亿次.

将函数对象存储在字典中,在函数本身中: -

def func1():
   if dict.has_key('str1'):
        dict['str1'] = func1
   -- do something --
Run Code Online (Sandbox Code Playgroud)

哪个更好,这个或上面的.这看起来更干净.?但请记住,这些函数会多次调用,因此has_key函数也会多次调用.

谢谢

python algorithm

9
推荐指数
2
解决办法
5613
查看次数

多处理模块显示每个子进程的内存与主进程相同。

我正在使用 python 的多处理模块,对此有一些困惑。

基本上,我最初在主进程中存储一些数据,大约为 16GB(主内存大小),如 top 命令所示。我已将这些数据存储为全局变量。

然后对这些数据进行多重处理,并相应地进行不同的处理。

现在我看到正在发生多处理,即所有进程都有自己的 CPU 利用率,但所有进程的内存均为 16 GB。为什么会这样。?难道它不应该使用我通过全局变量的引用传递发送的相同内存吗?请一些想法。

top命令的输出如下:-

PID用户PR NI VIRT RES SHR S%CPU%MEM时间+命令13908管理20 0 16.7g 16g 848 R 100.0 17.3 0:32.92 python 13429管理20 0 16.7g 16g
3336 S 0.0 17.3 15:06.97 python 13
910管理20 0 16.7克16g 848 R 100.3 17.3 0:32.94 python
13911 管理 20 0 16.7g 16g 840 R 100.0 17.3 0:33.02 python 13912 管理 20
0 16.7g 16g 836 R 99.6 17.3 0:33.00 python 1
3907 管理 20 0 16.7g 16g …

python linux memory-management

3
推荐指数
1
解决办法
3237
查看次数

Python中的多处理/多线程..?

我有一个我想要多次处理的代码(多处理),并且多个进程中的每一个的输出应该存储在一个公共存储器中,然后进行相应的处理.

每个单独的进程执行一段代码(维护字典),并且每个进程并排应该将数据存储在一个公共存储器中(并排或者如果不可能,则在最后存储所有字典.)

对于.eg

process1 ->  dict1,  
process2 -> dict2, 
process3 -> dict3

>main_dict = dict1 + dict2 + dict3
Run Code Online (Sandbox Code Playgroud)

我正在用Python执行这段代码.

我也可以在这里做多线程,但多线程实际上并不像我所听到的那样平行......所以我可以进行多处理.请告诉我在多处理模式下维持这种情况的过程,而不会浪费太多时间或使处理器保持理想状态.

谢谢

python algorithm performance memory-management

0
推荐指数
1
解决办法
158
查看次数