就和今天说早安


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 公益404

  • 搜索

编程软件安装

发表于 2019-02-04 | 更新于 2019-02-05 | 阅读次数
字数统计 547 字 | 阅读时长 2 分钟

neo4j

3.4 以后版本比较好
neo4j 3.1.0 Releases
官方下载链接
windows64 zip
https://neo4j.com/artifact.php?name=neo4j-community-3.1.0-windows.zip
windows64 exe
https://neo4j.com/artifact.php?name=neo4j-community_windows-x64_3_1_0.exe
linux
https://neo4j.com/artifact.php?name=neo4j-community-3.1.0-unix.tar.gz
mac
https://neo4j.com/artifact.php?name=neo4j-community_macos_3_1_0.dmg

windows下安装
想下载哪个版本 修改这个超链接 修改版本号
https://neo4j.com/artifact.php?name=neo4j-community_windows-x64_3_1_0.exe
https://neo4j.com/artifact.php?name=neo4j-community_windows-x64_3_3_1.exe

windows下载与安装neo4j
Neo4j 产品下载

igragh

我们需要安装python-igraph包。这是官方网址。直接使用pip安装会出现问题(Windows系统本身的问题),因此本人选用的非官方网址的安装包,见下面。这个网址在官网也提供了,一定要选对对应的版本。Python3.6以上的版本好像并没有对应的igraph包,因此安装的时候会出现平台不支持的提示。然后在dos系统环境下pip install 安装包,即可实现igraph的安装。
接下来,我们还需要安装支持igraph绘制图形的Cairo库。这个库同样在上面提供的非官方网址上可以找到,下载对应系统的版本,并进行pip安装即可。

Christoph提供了非官方的whl安装包。http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-igraph,这里还有很多其他的Windows二进制python扩展包。
下载对应版本:python_igraph-0.7.1.post6-cp27-none-win_amd64.whl。
进入本地保存的目录执行:

pip install python_igraph-0.7.1.post6-cp27-none-win_amd64.whl

cairo是一个用于向量图形绘图的开源库,可以在多个背景下进行2D绘图,C语言实现,它的python版本就是pycairo。请不要参考网上关于pycairo-1.8.10.win32-py2.7.msi安装的文章,因为目前的发行版里没有针对Windows64位系统的,pycairo非官方的whl安装包。http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycairo:
这里下载对应系统的python_igraph-0.7.1.post6-cp27-none-win_amd64.whl。到下载目录执行命令:

pip install python_igraph-0.7.1.post6-cp27-none-win_amd64.whl

参考:
Windows7 64位环境下Python-igraph环境配置
官方手册
https://blog.csdn.net/liuhuan323/article/details/78936781

远程服务器链接失败调试

发表于 2019-01-23 | 更新于 2019-04-25 | 分类于 服务器 | 阅读次数
字数统计 196 字 | 阅读时长 1 分钟

检测是否已启动

ps -e | grep ssh

看到有ssh字样,说明已启动,如果没有就手动启动

/etc/init.d/ssh start
vi /etc/ssh/sshd_config 没找到错误原因
启动失败,systemctl status ssh.service 查找具体信息,发现
Failed to start OpenBSD Secure Shell server

用sshd -T 查找错误原因,出现报错信息:
fatal: Missing privilege separation directory: /var/empty/sshd
检查/var/empty/sshd目录,发现确实不存在。手工创建此目录后,重新启动,发现sshd可以发起新的连接了。

Failed to start OpenBSD Secure Shell server [closed]

ssh连接不上linux服务器(fatal: Missing privilege sepa

终端闪退

可能Host key verification failed.REMOTE HOST IDENTIFICATION HAS CHANGED! 服务器被重新安装过
windows:在本地机器上,不是服务器,删除 .ssh/known_hosts
linux:ssh-keygen -R ip

python 多线程,多进程,多协程

发表于 2019-01-16 | 更新于 2019-01-30 | 阅读次数
字数统计 1,715 字 | 阅读时长 6 分钟

进程,线程,协程

如果你的代码是IO密集型的,线程和多进程可以帮到你。多进程比线程更易用,但是消耗更多的内存。如果你的代码是CPU密集型的,多进程就明显是更好的选择——特别是所使用的机器是多核或多CPU的。对于网络应用,在你需要扩展到多台机器上执行任务,RQ是更好的选择。
使用多进程,我们得建立一个多进程池。通过它提供的map方法,我们把URL列表传给池,然后8个新进程就会生成,它们将并行地去下载图片。这就是真正的并行,不过这是有代价的。整个脚本的内存将会被拷贝到各个子进程中。在我们的例子中这不算什么,但是在大型程序中它很容易导致严重的问题。
浅析Python中的多进程与多线程的使用

为什么在Python里推荐使用多进程而不是多线程

python多线程、多进程、协程的使用

关于python多线程编程中join()和setDaemon()的一点儿探究

进程池

创建进程需要消耗时间,销毁进程也需要时间。其次,即使开启了成千上万的进程,操作系统也不能让它们同时执行,这样反而会影响程序的效率。因此我们不能无限制的根据任务开启或者结束进程。

进程池:定义了一个池子,在里面放上固定数量的进程,有需求来了,就拿这个池中的一个进程来处理任务,等到处理完毕,进程并不关闭,而是将进程再放回进程池中继续等待认为。如果有许多任务需要执行,池中的进程数量不够,任务就要等待之前的进程执行任务完毕归来,拿到空闲进程才能继续执行。

对于python而言,由于其使用了全局解释锁(GIL),所以python的多线程并不能实现并发。因此,python的并发是通过多进程来实现的!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import os
import time
import random
from multiprocessing import Pool
from multiprocessing import Process
def func(i):
i += 1
if __name__ == '__main__':
p = Pool(5) # 创建了5个进程
start = time.time()
p.map(func,range(1000))
p.close() # 是不允许再向进程池中添加任务
p.join()
print(time.time() - start) # 0.35544490814208984
start = time.time()
l = []
for i in range(1000):
p = Process(target=func,args=(i,)) # 创建了一百个进程
p.start()
l.append(p)
[i.join() for i in l]
print(time.time() - start) # 101.00088691711426

在写代码时,pool(3)之后程序好像死锁,搞了两天,终于知道是因为from gevent import monkey; monkey.patch_all();引入了这个,但并不知道原因

apply_async(func[,args[,kwds[,callback = None]]]) #非阻塞且支持结果返回进行回调

apply_async(函数,不定参数) #四个进程在Pool进程池内并行(分给4核cpu),剩下的交替进行.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from multiprocessing import Pool,Process
import time,os
def Foo(a):#创建函数
time.sleep(2)
print('in the process:',os.getpid(),os.getppid())
return a+100
def bar(arga):#创建函数
print('---->',arga)
if __name__ == '__main__':
print('父进程ID:',os.getpid())
pool = Pool(2)#创建进程池最大容量为2,最多允许2个进程同时运行,参照线程信号量模式
for i in range(10):#创建10个进程
pool.apply_async(func=Foo,args=(i,),callback=bar)#创建线程,参数1调用函数,参数2设置i为函数FOO参数,参数3为返回函数
#参数三为回调函数,将FOO函数的返回值作为参数调用bar函数。
#pool.apply(func=Foo,args=(i,),callback=bar)#串行
#pool.apply_async(func=Foo,args=(i,),callback=bar)#并行
pool.close()#关闭
#pool.join()#如果没有.join语句,程序不执行就会关闭。这里是个大坑。
  1. 对写入操作 进行加锁
    就是说:对当前进行写入操作的进程锁定,直到该进程写完十个字,也就是一个完成的操作,后解除该进程的锁定,放它离开。切换到另外一个进程来操作。
    因为一次只能一个进程执行写入操作,而且必须执行完成完整的操作,才允许切换。所以不会造成文件内容的混乱。
    但是加锁一般会完造成程序的执行效率下降。而且,如果写入操作分散在整个代码的多处,
    总不能把整个代码都锁起来吧,这样岂不是又成单进程了么?
    所以:把写入操作抽象出来为单独的一个函数,这样对单独的一个函数加群,这样问题就不大了。
    更优雅的方法:使用multiprocessing的回调函数。
    1。把写入操作抽象为单独的一个函数
    2。把进程需要写入的内容,作为返回值返回
    3。使用回调函数写入进程返回内容。

python多进程文件加锁与回调
[进程与线程,加锁](https://blog.csdn.net/u014265088/article/details/53128108)

python进程池:multiprocessing.pool

进程能否实例化

能否定义在类中的进程,这个目前还没有实验

Can’t pickle when using multiprocessing Pool.map()
另外找到的可能出错的原因:
Windows下面的multiprocessing跟Linux下面略有不同,Linux下面基于fork,fork之后所有的本地变量都复制一份,因此可以使用任意的全局变量;在Windows下面,多进程是通过启动新进程完成的,所有的全局变量都是重新初始化的,在运行过程中动态生成、修改过的全局变量是不能使用的。multiprocessing内部使用pickling传递map的参数到不同的进程,当传递一个函数或类时,pickling将函数或者类用所在模块+函数/类名的方式表示,如果对端的Python进程无法在对应的模块中找到相应的函数或者类,就会出错。当你在Interactive Console当中创建函数的时候,这个函数是动态添加到main模块中的,在重新启动的新进程当中不存在,所以会出错。当不在Console中,而是在独立Python文件中运行时,你会遇到另一个问题:由于你下面调用multiprocessing的代码没有保护,在新进程加载这个模块的时候会重新执行这段代码,创建出新的multiprocessing池,无限调用下去。解决这个问题的方法是永远把实际执行功能的代码加入到带保护的区域中:if name == ‘mian‘:

总结

pool 可以创建进程池
from functools import partial 引入多个参数
pool.map
pool.apply
pool.apply_aysnc
这些的区别在这片博客中:https://www.cnblogs.com/alan-babyblog/p/5351031.html

进程池

进程池报错可能中断运行,但不显示错误

windows 使用

发表于 2019-01-05 | 更新于 2019-01-05 | 分类于 软件 | 阅读次数
字数统计 155 字 | 阅读时长 1 分钟

systeminfo | more

查看系统参数

相同命令运行

讲命令行写入bat文件中

后台运行 start /mim

在Linux下要使程序后台运行,可通过 java -jar Client.jar & 来实现

在Windows下,则通过 start /b java -jar Client.jar 来实现

阅读全文 »

Ubuntu 死机原因

发表于 2019-01-04 | 更新于 2019-01-04 | 阅读次数
字数统计 736 字 | 阅读时长 3 分钟

Linux查看内存大小和插槽

Linux 查看内存的插槽数,已经使用多少插槽,每条内存多大,已使用内存多大

1
2
3
dmidecode | grep -P -A5 "Memory\s+Device" | grep Size | grep -v Range
Linux 查看内存支持的最大内存容量

dmidecode | grep -P ‘Maximum\s+Capacity’

Linux 查看内存的频率

1
2
3
4
5
6
7
dmidecode | grep -A16 "Memory Device" | grep "Speed"
查看详细的主板信息
dmidecode | grep -A16 "System Information$"
查看详细的内存信息

dmidecode | grep -A16 “Memory Device$”
dmidecode -t memory

阅读全文 »

pycharn使用

发表于 2019-01-03 | 更新于 2019-01-03 | 分类于 python | 阅读次数
字数统计 641 字 | 阅读时长 3 分钟

pycharm 配置

一、在PyCharm下为你的Python项目配置Python解释器

    1、Settings–》Editor–》Project:当前项目名–》Project Interpreter–》Add Local

二、在Python下创建Python文件、Python模块

    1、File–》New–》Python File

    2、File–》New–》Python Package

阅读全文 »

numpy 知识

发表于 2019-01-02 | 更新于 2019-01-02 | 分类于 编程 | 阅读次数
字数统计 91 字 | 阅读时长 1 分钟

如何找到list中的np.nan值项

x = np.array([[1,2,3,4],
[2,3,np.nan,5],
[np.nan,5,2,3]])
print(np.argwhere(np.isnan(x)))

然而实际上,有些时候,如果是用pandas读出的数据,在list中print时提示为nan,但用isnan方法却并不能正确判断,会提示TypeError,此时需要用pandas.isnull()判断该值是否为空

pandas 使用

发表于 2019-01-01 | 更新于 2019-08-03 | 分类于 pandas | 阅读次数
字数统计 1,378 字 | 阅读时长 6 分钟

drop_duplicates:去除重复项

1
2
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

这个drop_duplicate方法是对DataFrame格式的数据,去除特定列下面的重复行。返回DataFrame格式的数据。

subset : column label or sequence of labels, optional
  用来指定特定的列,默认所有列
  keep : {‘first’, ‘last’, False}, default ‘first’
  删除重复项并保留第一次出现的项
  inplace : boolean, default False
  是直接在原来数据上修改还是保留一个副本

Pandas Dataframe增、删、改、查、去重、抽样基本操作

pandas的索引函数主要有三种:
loc 标签索引,行和列的名称
iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0
ix 是 iloc 和 loc的合体
at是loc的快捷方式
iat是iloc的快捷方式

https://www.cnblogs.com/zknublx/p/9645204.html

dataframe一列成多列

场景:一列中的值出现 1|2|3|56,这样用|分割的值,需要将其转换成4列。

2、操作:

names=df[‘names’].str.split(‘|’,expand=True)#多名字分列

names.columns=[‘ids0’,’ids1’,’ids2’,’ids3’,’ids4’,’ids5’,’ids6’,’ids7’]#

df=df.join(names)

其中names字段的列是包含|分割的值,最后将多列合并会原dataframe里。

pandas应用函数,它将多个值返回到pandas dataframe中的行

apply 中函数返回一个Series或列表
如返回:pd.Series([e,f,g], index=[‘a’, ‘b’, ‘c’])

https://codeday.me/bug/20180820/223407.html

https://stackoverflow.com/questions/23690284/pandas-apply-function-that-returns-multiple-values-to-rows-in-pandas-dataframe

groupby

1.groupby(“id”).resample(“M”).agg(“mean”)会报错:Exception: Column(s) num_temp selected 并不知道原因
但可以这样

1
2
3
4
5
df.set_index('date').groupby('name')['ext price'].resample("M").sum()
df[["ext price", "quantity", "unit price"]].agg(['sum', 'mean'])
df.agg({'ext price': ['sum', 'mean'], 'quantity': ['sum', 'mean'], 'unit price': ['mean']})

python处理数据的风骚操作pandas 之 groupby&agg

2.这些操作对数值型的列自动进行计算,非数值型的会去掉
如果不对原始数据作限制的话,聚合函数会自动选择数值型数据进行聚合计算。如果不想对年龄计算平均值的话,就需要剔除改变量:
student.drop(“age”).groupby(“id”).mean()

“”统计值””

1
2
3
4
5
6
7
8
9
10
11
def stats(x,time_interval):
return pd.Series([x.count(),x.min(),x.idxmin(),
x.quantile(.25),x.median(),
x.quantile(.75),x.mean(),
x.max(),x.idxmax(),
x.mad(),x.var(),
x.std(),x.skew(),x.kurt()],
index = [time_interval+'_Count',time_interval+'_Min',time_interval+'_Whicn_Min',
time_interval+'_Q1',time_interval+'_Median',time_interval+'_Q3',time_interval+'_Mean',
time_interval+'_Max',time_interval+'_Which_Max',time_interval+'_Mad',
time_interval+'_Var',time_interval+'_Std',time_interval+'_Skew',time_interval+'_Kurt'])

Python数据分析之pandas学习

3.对分组进行迭代:
for name, group in df.groupby(‘key1’):
print (name)
print (group)

python/pandas数据挖掘(十四)-groupby,聚合,分组级运算

Pandas按日期对状态进行汇总统计
《Pandas Cookbook》第10章 时间序列分析1. Python和Pandas日期工具的区别2. 智能切分时间序列3. 只使用适用于DatetimeIndex的方法4. 计算每周的犯罪数5.

详解

pandas聚合和分组运算——GroupBy技术(1)

时间序列划分时间间隔

在进行数据操作时, 经常会碰到基于同一列进行错位相加减的操作, 即对某一列进行向上或向下平移(shift).
我需要计算网络数据包之间的时间间隔,使用pandas的实现过程如下。

例如 a = ​[‘2011-08-10 03:56:10’, ‘2011-08-10 03:56:20’, ‘2011-08-10 03:56:40’, ‘2011-08-10 03:56:50’], 时间字符串列表。

import pandas as pd​

import numpy as np​

  1. 将a转换为Series结构, b = ​pd.Series(a)

  2. 将b转换为DateTime数据类型, c = pd.to_datetime(b)

  3. 计算时间间隔TimeDelta, d = (c - c.shift()​).dropna()

  4. 计算间隔了多少秒(将TimeDelta类型数据转换为基于秒的整数), e = d.map(lambda x: x/np.timedelta64(1, ‘s’))

* Pandas计算出的时间间隔数据的类型是np.timedelta64, 不是Python标准库中的timedelta类型,因此没有total_seconds()函数,需要除以np.timedelta64的1秒来计算间隔了多少秒。

也可以将Pandas的Series转换成numpy的ndarray后计算间隔的秒数:

  1. b = np.array(a)

  2. c = np.diff(b)/np.timedelta64(1, ‘s’)​

*numpy的diff()函数实在是太赞了。​

使用Pandas获得数据的时间间隔序列
python对列进行平移变换(shift)

pandas 时间序列 之日期范围、频率及移动中图
!频率选项

##

1
2
3
print(‘---------获取2013年的数据-----------‘)
print(df[‘2013‘].head(2)) # 获取2013年的数据
print(df[‘2013‘].tail(2)) # 获取2013年的数据

Pandas日期数据处理:如何按日期筛选、显示及统计数据

滑窗,Rolling 和 Expanding 待研究

移动窗口函数

一种用于时间序列操作的重要用法,是使用滑窗(sliding windown)或呈指数降低的权重(exponentially decaying weights),来对时间序列进行统计值计算和其他一些函数计算。 这个对于消除噪声或有缺陷的数据是很有用的。这里我们称之为Moving Window Functions(移动窗口函数),不过其中也包括了不适用固定长度窗口的函数(functions without a fixed-length window),比如指数加权移动平均数(exponentially weighted moving average)。和其他一些统计函数以后,这些函数也会自动无视缺失值。

作者:蜘蛛侠不会飞
来源:CSDN
原文:https://blog.csdn.net/qq_40587575/article/details/81205873

Rolling 和 Expanding

多级索引

给妹子讲python-S02E16多级索引Pandas的取值、分片与运算

总结

Pandas:让你像写SQL一样做数据分析(一)

value_counts()

是计数,统计所有非零元素的个数,默认以降序的方式输出Series。

##describe
df.describe()
describe函数总结数据集分布的中心趋势,分散和形状,不包括NaN值

python错误

发表于 2018-12-31 | 更新于 2018-12-31 | 分类于 编程 | 阅读次数
字数统计 258 字 | 阅读时长 1 分钟

AttributeError: ‘module’ object has no attribute ‘handlers’

原来导入logging模块后并没有自动导入其子模块handlers

import logging
import logging.handlers
……
阅读全文 »

mysql错误

发表于 2018-12-31 | 更新于 2019-01-01 | 分类于 编程 | 阅读次数
字数统计 388 字 | 阅读时长 2 分钟

1114 – The table ‘xxxx’is full解决方法

ubuntu中mysql 的配置文件 my.cnf 的路径是/etc/mysql/my.cnf。
2、其它非debian系列的linux中mysql的配置文件my.cnf的路径一般是/etc/my.cnf。

ERROR: Export data to file: (‘Lost connection to MySQL server during query’, 2013

MySQL workbench Q&A找到原因,链接如下 https://dev.mysql.com/doc/workbench/en/workbench-faq.html#faq-workbench-error-lost-connection

Yes, go to ‘ edit ,Preferences, SQL Editor’, and adjust the DBMS connection read time out option that defaults to 600 seconds. This sets the maximum amount of time (in seconds) that a query can take before MySQL Workbench disconnects from the MySQL server.

通过修改红色字体的值,并重启启动workbench 生效(一定要重启哦!)。

The MySQL server is running with the –secure-file-priv option

```
mysql -u -p
show variables like ‘%secure%’;查看 secure-file-priv 当前的值是什么
导出的数据必须是这个值的指定路径才可以导出,默认有可能是NULL就代表禁止导出,所以需要设置一下

知道mysql安装路径下的my.ini文件,设置一下路径:
然后重启数据库即可

Error executing task: ‘ascii’ codec can’t decode byte 0xc4 in position 32: ordinal not in range(128)

存储路径名不要有中文
https://bbs.csdn.net/topics/390347030
https://blog.csdn.net/ACMAIN_CHM/article/details/4174186

mysql 导出csv

命令行:
SELECT * FROM server_warning_repaired

into outfile ‘/tmp/test.csv’
https://my.oschina.net/u/2335552/blog/733185

mysql workbench:
表的右键有导出数据选项,但好像只能一张表一张表
整个数据库的导出是导出sql

查看端口

终端mysql -uroot -ppasswd 进入
show global variables like ‘port’;查看端口号

https://blog.csdn.net/LANGZI7758521/article/details/51391932

1…345…11
WeiXiangYu

WeiXiangYu

胸怀猛虎 细嗅蔷薇

103 日志
30 分类
57 标签
GitHub Twitter Youtube Weibo 豆瓣 知乎 CSDN
Links
  • MacTalk
  • 爱可可爱生活
  • IT瘾
  • 苏剑林
© 2017 - 2020 WeiXiangYu
本站总访问量次 本站访客数人次
由 Hexo 强力驱动
主题 - NexT.Pisces